package 进阶阶段;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 创建人：刘源江
 * 类描述：
 * 创建时间：2022/8/8 23:44
 **/

public class demo02Date日期时间类 {
    public static void main(String[] args) throws ParseException {
        //Date类：日期类，模拟日期形式的时间，可以调用getTime方法精确到毫秒，得到日期时间的时间毫秒值
        //其构造方法，无参数表示当前时间，有参数就有参照物时间加上方法传入时间，参照物时间为1970年1月1日0时0分0秒，中国要多加8小时
        Date date = new Date();
        System.out.println(date);//Mon Aug 08 23:51:23 CST 2022
        System.out.println(date.toString());//Mon Aug 08 23:51:23 CST 2022
        System.out.println(date.getTime());//1659973883718(时间戳)

        Date date1 = new Date(0);
        System.out.println(date1);//Thu Jan 01 08:00:00 CST 1970
        System.out.println(date1.toString());//Thu Jan 01 08:00:00 CST 1970
        System.out.println(date1.getTime());//0

        //DateFormat类：日期格式化，把日期格式化为指定的字符串，由于它是抽象类，所以用的是它的子类SimpleDateFormat
        //通过构造方法传入格式，拿到对象名调用format方法把Date对象格式化为字符串，反过来就是解析，调用的是parse方法
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat();//没有指定格式，会有默认的格式
        String s1 = simpleDateFormat1.format(date);
        System.out.println(s1);//22-8-8 下午11:57

        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
        SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定格式
        String s2 = simpleDateFormat2.format(date);
        System.out.println(s2);//2022年08月09日00时02分42秒
        String s3 = simpleDateFormat3.format(date);
        System.out.println(s3);//2022-08-09 00:02:42

        //计算自己出生多久
        Date d = new Date();
        long nowTime = d.getTime();

        String bir = "1997年04月16日";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date parse = sdf.parse(bir);
        long parseTime = parse.getTime();

        System.out.println("我出生了" + (nowTime - parseTime)/1000/60/60/24/365 + "年");
    }
}
